package org.dromara.system.business.applicationManage.domain.dto;

import cn.hutool.core.net.multipart.UploadFile;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import org.dromara.system.business.label.domain.LabelManage;
import org.dromara.system.common.UploadFiles;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * 应用管理参数实体
 * @Author: CHS
 * @CreateTime: 2025-02-10  11:09
 */
@Data
public class AppManageParamDTO {
    /**
     * 主键
     */
    private Long id;

    /**
     * 发布日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime releaseTime;

    /**
     * 应用名称
     */
    @NotEmpty(message = "应用名称不能为空")
    private String applicationName;

    /**
     * 版本号
     */
    @NotEmpty(message = "版本号不能为空")
    private String applicationVersion;

    /**
     * 应用地址
     */
    @NotEmpty(message = "应用地址不能为空")
    private String applicationAddress;

    /**
     * 开发者名称
     */
    @NotEmpty(message = "开发者名称不能为空")
    private String applicationDeveloper;

    /**
     * 应用账号
     */
    @NotEmpty(message = "应用账号不能为空")
    private String applicationAccount;

    /**
     * 应用密码
     */
    @NotEmpty(message = "应用密码不能为空")
    private String applicationPassword;

    /**
     * 交付方式id
     */
    @NotEmpty(message = "交付方式不能为空")
    private String applicationDeliveryId;

    /**
     * 应用领域id
     */
    @NotEmpty(message = "应用领域不能为空")
    private String applicationExtentId;

    /**
     * 应用说明
     */
    private String applicationRemark;

    /**
     * 图片
     */
    private List<UploadFiles> files;

    /**
     * 标签
     */
    private List<LabelManage> labelManages;

    /**
     * 备注信息
     */
    private String remark;

    /**
     * 应用状态（0审核中、1待上架、2已上架）
     */
    private Integer applicationStatus;

    /**
     * 发布日期查询开始时间
     */
    private LocalDateTime releaseBeginTime;

    /**
     * 发布日期查询结束时间
     */
    private LocalDateTime releaseEndTime;

}
